package org.ciallo.simplemusicplayer.viewmodel;

import android.app.Application;
import androidx.annotation.NonNull;
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import org.ciallo.simplemusicplayer.data.model.Song;
import org.ciallo.simplemusicplayer.data.repository.SongRepository;

import java.util.List;

/**
 * @author Jukomu
 * @Description: 管理收藏歌曲相关逻辑的 ViewModel
 * @Package: org.ciallo.simplemusicplayer.viewmodel
 * @Project: SimpleMusicPlayer
 * @name: FavoritesViewModel
 * @Date: 2025/5/29-05:14
 * @Filename: FavoritesViewModel
 */
public class FavoritesViewModel extends AndroidViewModel { // 通常继承 AndroidViewModel 或 ViewModel
    private final SongRepository songRepository;

    /**
     * LiveData，包含所有收藏歌曲的完整信息列表。
     * UI可以直接观察此 LiveData 来显示收藏列表。
     */
    public final LiveData<List<Song>> favoriteSongs;


    /**
     * 构造函数。
     * @param application Application实例。
     */
    public FavoritesViewModel(@NonNull Application application) {
        super(application);
        songRepository = new SongRepository(application);
        favoriteSongs = songRepository.getAllFavoriteSongsWithDetails();
    }

    /**
     * 检查指定歌曲是否已收藏。
     * @param songId 歌曲ID。
     * @return LiveData<Boolean>，指示是否收藏。
     */
    public LiveData<Boolean> isFavorite(long songId) {
        return songRepository.isFavorite(songId);
    }

    /**
     * 将歌曲添加到收藏。
     * @param songId 要收藏的歌曲ID。
     */
    public void addToFavorites(long songId) {
        songRepository.addToFavorites(songId);
    }

    /**
     * 从收藏中移除歌曲。
     * @param songId 要移除的歌曲ID。
     */
    public void removeFromFavorites(long songId) {
        songRepository.removeFromFavorites(songId);
    }
}